package br.edu.senai.view;

import br.edu.senai.controller.ProdutoDAO;
import br.edu.senai.model.Produto;
import br.edu.senai.util.UploadFile;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.servlet.http.Part;

@ManagedBean
public class ProdutoBean {

    private ProdutoDAO pDao = new ProdutoDAO();
    private Produto produto = new Produto();
    
    private int pesquisarPor = 0;
    private String criterio = "";
    
    private Part file1;
    UploadFile uploadFile = new UploadFile();
    
    private String pathInfo = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/") + 
            "\\resources\\imgLanches\\";
    
    public ProdutoBean() {
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public ProdutoDAO getpDao() {
        return pDao;
    }

    public void salvar() {
        produto.setImagem(UploadFile.getFilename(file1));        
        pDao.salvar(produto);
        produto = new Produto();
        
        try {
            uploadFile.upload(file1, pathInfo);
        } catch (Exception e) {
            FacesMessage message = new FacesMessage("Erro", "Erro ao salvar imagem!!" + e.getMessage());
        }

        FacesMessage message = new FacesMessage("Succesful", " Salvo com sucesso!!");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void excluir(Produto p) {
        pDao.remover(p);
    }

    public List<Produto> getListar() {
        
        if(this.pesquisarPor > 0 && !this.criterio.isEmpty()) {
            return pDao.listar(pesquisarPor, criterio);
        }
        
        return pDao.listar();
    }

    public int getPesquisarPor() {
        return pesquisarPor;
    }

    public void setPesquisarPor(int pesquisarPor) {
        this.pesquisarPor = pesquisarPor;
    }

    public String getCriterio() {
        return criterio;
    }

    public void setCriterio(String criterio) {
        this.criterio = criterio;
    }

    public Part getFile1() {
        return file1;
    }

    public void setFile1(Part file1) {
        this.file1 = file1;
    }
}